uniform vec4 u_params[19];
uniform vec4 u_rect;

#define u_viewportPixelSize					u_params[0].xy
#define u_halfViewportPixelSize				u_params[0].zw
#define u_depthUnpackConsts					u_params[1].xy
#define u_ndcToViewMul						u_params[2].xy
#define u_ndcToViewAdd						u_params[2].zw
#define u_perPassFullResCoordOffset			u_params[3].xy
#define u_perPassFullResUVOffset			u_params[3].zw
#define u_viewport2xPixelSize				u_params[4].xy
#define u_viewport2xPixelSize_x_025			u_params[4].zw
#define u_effectRadius						u_params[5].x
#define u_effectShadowStrength				u_params[5].y
#define u_effectShadowPow					u_params[5].z
#define u_effectShadowClamp					u_params[5].w
#define u_effectFadeOutMul					u_params[6].x
#define u_effectFadeOutAdd					u_params[6].y
#define u_effectHorizonAngleThreshold		u_params[6].z
#define u_effectSamplingRadiusNearLimitRec	u_params[6].w
#define u_depthPrecisionOffsetMod			u_params[7].x
#define u_negRecEffectRadius				u_params[7].y
#define u_loadCounterAvgDiv					u_params[7].z
#define u_adaptiveSampleCountLimit			u_params[7].w
#define u_invSharpness						u_params[8].x
#define u_passIndex							u_params[8].y
#define u_quarterResPixelSize				u_params[8].zw
#define u_patternRotScaleMatrices(i)		u_params[9+(i)]
#define u_normalsUnpackMul					u_params[14].x
#define u_normalsUnpackAdd					u_params[14].y
#define u_detailAOStrength					u_params[14].z
#define u_layer								u_params[14].w
#define u_normalsWorldToViewspaceMatrix0	u_params[15]
#define u_normalsWorldToViewspaceMatrix1	u_params[16]
#define u_normalsWorldToViewspaceMatrix2	u_params[17]
#define u_normalsWorldToViewspaceMatrix3	u_params[18]

#define SSAO_MAX_TAPS                               32
#define SSAO_ADAPTIVE_TAP_BASE_COUNT                5
#define SSAO_ADAPTIVE_TAP_FLEXIBLE_COUNT            (SSAO_MAX_TAPS-SSAO_ADAPTIVE_TAP_BASE_COUNT)
#define SSAO_DEPTH_MIP_LEVELS                       4
#define SSAO_ENABLE_NORMAL_WORLD_TO_VIEW_CONVERSION 1
